Автоматизація розв`язання систем лінійних алгебраїчних рівнянь

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Реферат

Пояснювальна записка: 42 с., 11 рис., 1 табл., 4 джерела, 5 дод.

Метою роботи над даним курсовим проектом є написання програмного продукту для вирішення систем лінійних рівнянь. Метод Гаусса. Програмний продукт повинен виводити на екран теоретичну інформацію по темі "Системи лінійних алгебраїчних рівнянь. Метод Гауса", давати можливість вирішувати системи лінійних рівнянь, а також надавати необхідний довідковий матеріал на вимогу користувача.

Результати роботи може бути використані на виробництві, де допускається деяка похибка обчислень, а так само школярами і студентами для звірки розв'язуваних ними завдань.

При виконанні даного ПП мною були отримані навички в розв'язуванні систем лінійних рівнянь, а також в достатньому обсязі вивчений мову програмування Pascal 7.0.

РІШЕННЯ систему лінійних алгебраїчних рівнянь, методом Гаусса.

Зміст

Реферат

Перелік позначень, символів, одиниць, скорочень і термінів

Введення

1. Постановка завдання

1.1 Мета розробки

1.2 Область застосування

1.3 Актуальність розробки ПП

1.4 Вхідні дані

1.5 Вихідні дані

1.6 Схема інформаційних потоків

2. Рішення систем лінійних алгебраїчних рівнянь методом гауса

2.1 Основні поняття

2.2 Метод Гаусса. Виняток невідомих

2.3 Однорідна СЛАР

3. Алгоритм розв'язання задачі

3.1 Водні дані

3.3 Вхідні дані

3.4 Алгоритм

4. Проектування інтерфейсу

5. Опис програмної реалізації

5.1 Функціонально-логічна схема програми

5.2 Опис процедур і функцій

5.3 Опис структур та форматів

6. Комплект поставки і порядок встановлення

7. Тестування програми

Висновки

Список використаних джерел

Додаток А

Додаток Б

Для того, щоб вийти з програми на екрані меню потрібно натиснути цифру "5". Додаток В

Додаток В

Додаток Г

Додаток Д

Перелік позначень, символів, одиниць, скорочень і термінів

ПП - програмний продукт

СЛАР - система лінійних алгебраїчних рівнянь

Введення

У даному курсовому проекті був розроблений програмний продукт, призначений для розв'язання систем лінійних алгебраїчних рівнянь методом Гауса.

Рішення систем рівнянь, містить чітко сформульований алгоритм для проведення обчислень.

Одним з найважливіших розділів математики є розділ, присвячений обчислень систем лінійних рівнянь. І це не дивно, тому що обчислення систем лінійних рівнянь присутня у всіх сферах людської діяльності.

Дуже суттєвою перевагою такого програмного продукту є здатність запобігати помилкам людського фактора, які можуть виникнути при введенні інформації. Це обумовлюється тим, що програма здійснює перевірку на наявність таких помилок. Якщо ж такі помилки виникли, то на екран буде виведено попередження про неправильне введення, і користувачеві буде надана можливість повторити введення.

Крім того, метод в електронному вигляді досить компактний, не має великих системних вимог, а також розрахований на широку аудиторію користувачів.

1. Постановка завдання

1.1 Мета розробки

Метою створення програмного продукту є автоматизація процесу розв'язання систем рівнянь.

Наявність зручного у використанні графічного інтерфейсу дозволяє вибрати одну із запропонованих розробником функцію для розв'язання систем рівнянь і побудови графіків. Крім того, ПП забезпечений довідковою системою, що дозволяє легко отримати доступ до цікавить користувача інформації про роботу програми, а також теоретичного матеріалу на тему "Системи лінійних алгебраїчних рівнянь методом Гауса".

1.2 Область застосування

Використання даного ПП можливо в сфері освіти у вигляді допоміжної програми для школярів і студентів при вивченні методу Гауса, для автоматизації у вирішенні СЛАР, а також для самоконтролю.

1.3 Актуальність розробки ПП

Людина все частіше вдається до використання комп'ютера для того, щоб в короткі терміни, і з максимальною ефективністю вирішувати поставлені завдання. Ця програма може виявляти помилки, до того ж, вона у своїх розрахунках не містить частку людського фактора, що тим самим призводить до більш точних розрахунків. У роботі такі системи здатні функціонувати без втручання людини, здійснювати розрахунки самостійно, тільки маючи потребу у введенні інформації користувачем.

1.4 Вхідні дані

Вхідними даними програми є введені з клавіатури і з файлу коефіцієнти матриці, а також виведення інформації з файлів. Коли користувач відкриває ПП, на середину екрану виводиться меню з текстового файлу "menu. Txt". При виборі пункту "Теорія" на екран виводиться теоретичний матеріал з файлів: "Text 1. Txt", "Text 2. Txt", "Text 3. Txt", "Text 4. Txt", "Text 5. Txt", " Text 6. txt ". При виборі пункту" Приклад "на екран виводяться приклади розв'язання СЛАР методом Гауса з файлів" Primer 1. txt "," Primer 2. txt "," Primer 3. txt "," Primer 4. txt ". При виборі пункту "Довідка" на екран виводиться довідковий матеріал по програмному продукту з файлу "SPRAVKA1. txt".

1.5 Вихідні дані

Вихідними даними є приведена до ступінчастому увазі матриця, коріння СЛАР та кінцевий результат, виведений на екран і записаний у файл "Про tvet. Txt".

1.6 Схема інформаційних потоків

Вся програма являє собою одне ціле "тіло", куди входять п'ять блоків: блок відображення теоретичної інформації, блок відображення прикладів розв'язання СЛАР, блок введення вихідних даних, блок обчислень, блок виведення результатів і блок відображення довідкової інформації. Дані, що зберігаються на диску в блоці відображення теоретичної інформації, - це файли теоретичної інформації, а дані виводяться на екран у цьому блоці, - це довідкова інформація. Дані, що зберігаються на диску в блоці відображення прикладів СЛАР, - це файли прикладів розв'язання СЛАР, а дані виводяться на екран у цьому блоці, - це довідкова інформація. Даними, що вводяться з клавіатури в блок введення вихідних даних, є введення матриці коефіцієнтів, а дані виводяться на екран у цьому блоці, - це повідомлення про помилку і підказки при введенні. У блоці виведення результатів на екран виводяться коріння вирішеною СЛАР. Графічне рішення.

Дані, що зберігаються на диску в блоці відображення довідкової інформації, - це файли довідкової інформації, а дані виводяться на екран, - це довідкова інформація. На малюнку 2.1 користувач може простежити всі вищеописане.

Малюнок 1.1 - Схема інформаційних потоків для обчислення СЛАР методом Гауса

Умовні позначення до малюнка 2.1:

- Дані, що вводяться з клавіатури

- Дані, що зберігаються на диску

- Дані, що виводяться на екран

2. Рішення систем лінійних алгебраїчних рівнянь методом гауса

2.1 Основні поняття

Система лінійних алгебраїчних рівнянь (СЛАР) з m рівнянь з n невідомими х1 ,..., хn - це система рівнянь виду

a11x1 + a12x2 + ... + A1nxn = b1

a21x1 + a22x2 + ... + A2nxn = b2

. ... ... ... ... ... ... ... ... ... ... ... ..., (2.1)

am1x1 + am2x2 + ... + Amnxn = bm

де числа aij (i = 1, m; j = 1, n) називається коефіцієнтами СЛАР, а bi - вільними членами СЛАР, причому (aij, bi) Є R.

Індекс i позначає номер рівняння, а індекс j - номер невідомого.

Система алгебраїчних рівнянь називається лінійної, якщо всі рівняння системи містять невідомі тільки першого ступеня, і вони між собою не перемножуються.

СЛАР називається квадратною, якщо в ній число рівнянь дорівнює числу невідомих, тобто m = n.

СЛАР називається однорідною, якщо всі її вільні члени дорівнює нулю, тобто bi = 0.

СЛАР називається неоднорідною, якщо серед її вільних членів хоча б один не дорівнює нулю, тобто bi ≠ 0.

Рішення СЛАР (2.1) називається така сукупність значень невідомих x1 = C1 ,..., xn = Cn, яка кожне рівняння СЛАР звертає в правильне числове рівність (тотожність).

СЛАР називається спільним, якщо вона має хоча б одне рішення, і не спільних, якщо вона взагалі не має рішень.

Спільна СЛАР називається визначеною, якщо вона має єдине рішення, і не визначеною, якщо вона має більше одного рішення.

Невизначена СЛАР завжди має нескінченну безліч рішень. Тоді кожне її рішення називається приватним рішенням СЛАР, а множина всіх приватних рішень називається загальним рішенням СЛАР.

СЛАР називається еквівалентними, якщо вони мають одне й теж безліч рішень.

Елементарними (тотожними) перетвореннями СЛАР є:

1) перестановка рівнянь,

2) множення будь-якого рівняння на число ʎ ≠ 0,3) збільшення одного рівняння до іншого.

При елементарних перетвореннях отримують тільки еквівалентні СЛАР.

2.2 Метод Гаусса. Виняток невідомих

Метод Гауса є універсальним, так як застосовується для дослідження на спільність і рішення не тільки квадратних, а й будь-яких СЛАР. Суть методу: СЛАР коротко записують у вигляді розширеної матриці, яку за допомогою елементарних перетворень над рядками призводять до ступінчастого вигляду.

Цей процес називають прямим ходом методу Гауса. У кожному рядку ступінчастою матриці відповідає своє рівняння алгебри.

Ступенева СЛАР совместна тільки тоді, коли вона не містить рядків виду <0 0 ... 0 | c>, де з ≠ 0, так як їм відповідають суперечливі рівності виду 0 = с. Рядки виду <0 0 ... 0 | 0> відкидаються, так як їм відповідає тотожність 0 ≡ 0.

Рішення спільної СЛАР ступеневої виду знаходять так: з останнього рівняння СЛАР знаходиться значення невідомої xn і підставляється в вищестояще рівняння, щоб знайти значення xn-1. Далі, використовуючи значення цих двох невідомих, піднімаються на сходинку вище і знаходять значення xn-2 і так далі. Останнім знаходять значення невідомої x1 з першого рівняння. Описаний процес називається зворотним ходом методу Гауса.

2.3 Однорідна СЛАР

Однорідна СЛАР має вигляд

a11x1 + a12x2 + ... + A1nxn = 0

a21x1 + a22x2 + ... + a 2 nxn = 0

... ... ... ... ... ... ... ... ... ... ..., (2.2)

am 1 x 1 + am 2 x 2 + ... + Amnxn = 0

У однорідної СДАУ нульової стовпець не змінюється при елементарних перетвореннях над рядками розширеної матриці. Тому в ній ранг матриці коефіцієнтів завжди дорівнює рангу розширеної матриці. (R (A) = r (Ab)).

Тоді, по теоремі Кронекера - Капеллі будь-яка однорідна СЛАР завжди сумісна і, згідно з її вигляду, завжди має нульове (тривіальне) рішення: x1 =... = Xn = 0. Якщо при цьому ранг матриці коефіцієнтів дорівнює числу невідомих (r (A) = n), то для однорідної СЛАР нульове рішення є єдино можливим.

Теорема 1.

Для того щоб однорідна СЛАР мала нульові рішення, необхідно і достатньо, щоб ранг матриці коефіцієнтів був менше числа невідомих (r (A) <n).

Доказ.

1) Необхідність. Припустимо протилежне, тобто, що r (A) = n, де n - число невідомих. Тоді порядок базисного мінору Mn буде дорівнює n, тому що r (Mn) = r (A) = n. Отже, за формулами Крамера однорідна СЛАР матиме єдине рішення - нульове: xi = Δ i / Δ = 0, де Δ i = 0, a Δ ≠ 0. Таким чином, при r (A) = n однорідна СЛАР ненульових рішень не має.

2) Достатність. Нехай r (A) <n, тоді по слідству 2 теореми Кронекера-Копелло однорідна СЛАР буде спільною і невизначеною, тобто вона буде мати нескінченну безліч рішень, в тому числі і нульових. Fin.

Теорема 2.

Для того щоб квадратна однорідна СЛАР мала нульові рішення, необхідно і достатньо, щоб її головний визначник дорівнював нулю (Δ = 0). Доказ.

1) Необхідність. За вищенаведеної теоремі 1, якщо однорідна СЛАР має нульові рішення, то ранг її матриці коефіцієнтів повинен бути меншою за кількість невідомих (r (A) <n). Отже, головний визначник квадратної однорідної СЛАР повинен бути рівний нулю (Δ = 0).

2) Достатність. Якщо головний визначник квадратної однорідної СЛАР дорівнює нулю (Δ = 0), то ранг її матриці коефіцієнтів буде менше числа невідомих (r (A) <n). Тому така СЛАР має нескінченну безліч ненульових рішень. Fin.

Теорема 2.

Для того щоб квадратна однорідна СЛАР мала нульові рішення, необхідно і достатньо, щоб її головний визначник дорівнював нулю (Δ = 0). Доказ.

1) Необхідність. За вищенаведеної теоремі 1, якщо однорідна СЛАР має нульові рішення, то ранг її матриці коефіцієнтів повинен бути меншою за кількість невідомих (r (A) <n). Отже, головний визначник квадратної однорідної СЛАР повинен бути рівний нулю (Δ = 0).

2) Достатність. Якщо головний визначник квадратної однорідної СЛАР дорівнює нулю (Δ = 0), то ранг її матриці коефіцієнтів буде менше числа невідомих (r (A) <n). Тому така СЛАР має нескінченну безліч ненульових рішень.

3. Алгоритм розв'язання задачі

3.1 Водні дані

Вхідними даними в алгоритмі рішення систем лінійних рівнянь методом Гауса є:

А: масив [1 ... N, 1 ... N] вещ. {Матриця}

В: масив [1 ... N] вещ. {Масив вільних коефіцієнтів}

N: цілий. {Розмір матриці}

3.2 Проміжні дані

Проміжні дані в алгоритмі розв'язання систем лінійних рівнянь методом Гауса є:

l: цілий. {Індекс елементів. Номер рядка,

яку обробляємо}

i: цілий {номер "Базовою рядка"}

К: вещ. {Множник для l - го рядка}

kol: цілий {кількість нулів у поточному рядку}

S: вещ. {Сума елементів, що обчислюється

при зворотному ході методу Гауса}

3.3 Вхідні дані

Вихідні дані в алгоритмі рішення систем лінійних рівнянь методом Гауса є:

х: масив [1 ... N] вещ. {Масив відповідей}

Rez: цілий. {Кількість рішень матриці:

0 - жодного; 1 - одне; 2 - ∞}

3.4 Алгоритм

На малюнку 3.1 зображений введення розміру матриці, який повинен бути більше нуля

Малюнок 3.1 Введення

На малюнку 3.2 зображений цикл введення коефіцієнтів.

для i: = 1 до N

Малюнок 3.2 Цикл.

На малюнку 3.3 зображений цикл приведення матриці до ступінчастого вигляду і знаходження коренів.

для i: = 1 до N -1

Малюнок 3.3 Східчастий вид

На малюнку 3.4 показано що відбувається якщо змінної Rez присвоюються значення 0, 1,2.

Rez: = 1

для i: = 1 до N

Малюнок 3.4 Змінна Rez

Малюнок 3.5 є продовженням малюнка 3.4

якщо Rez = 1 to

для i: = N-1 до 1 крок -1

{Висновок матриці А і вектора х}

Інакше

Якщо Rez = 0 то

Висновок

Інакше висновок

Малюнок 3.5 Змінна Rez.

4. Проектування інтерфейсу

У даному програмному продукті був використаний текстовий інтерфейс, тому що розробник віддає йому більшу перевагу. Був обраний комбінований режим. Текстовий - для написання інтерфейсу, графічний - для малювання графіків.

Меню інтерфейсу складається з 5 пунктів кожному з яких відповідає своя цифра:

пункт виду "1 - Теорія", означає, що для виклику теоретичної інформації потрібно натиснути клавішу 1;

пункт виду "2 - Приклад", означає, що для виклику приклад рішення СЛАР методом Гауса потрібно натиснути клавішу 2;

пункт виду "3 - Рішення", означає, що для виклику діалогового вікна, де буде запропоновано користувачеві ввести свої коефіцієнти для вирішенні СЛАР, потрібно натиснути клавішу 3;

пункт виду "4 - Довідка", означає, що для виклику довідкової інформації потрібно натиснути клавішу 4;

пункт виду "5 - Вихід", означає, що для виходу з програми потрібно натиснути клавішу 1;

Статусний рядок відображає інформацію наступного виду:

підказки користувачеві, щодо подальших дій: "Натисніть номер пункту меню", "Для переходу вкажіть номер сторінки (від 1 до 6)," Для повернення в меню натисніть Esc, для виведення довідки натисніть 0 "," Для повернення назад, натисніть 1 ".

5. Опис програмної реалізації

5.1 Функціонально-логічна схема програми

Дана схема відображає укрупнений алгоритм роботи програми з урахуванням інтерфейсних рішень (див. малюнок 5.1).

Спочатку відбувається промальовування головного вікна програми, в результаті чого на екран виводяться 5 пунктів головного меню. Якщо обрана перший пункт (1 - Теорія), то відбувається виведення теоретичної інформації на екран. Якщо обрана другий пункт меню (2 - Приклад) - висновок приклад рішення СЛАР на екран. Якщо обрана третій пункт (3 - Рішення) - відбувається рішення СЛАР методом Гауса. Якщо вибраний четвертий пункт (4 - Довідка) - на екран виводиться довідкова інформація за методом Гауса. Якщо обраний п'ятий пункт (5 - Вихід) - відбувається повний вихід з програми. Якщо ви не встановили ні один пункт меню, на екрані нічого не відбувається.

Рис.5.1 Функціонально - логічна схема програми

5.2 Опис процедур і функцій

Процедура LoadFile (Name: string); - відкриває текстові файли.

Name - ім'я файлу.

Процедура menu; - виводить на екран головне меню.

Процедура menuTeorii; - виводить на екран файл з меню для теорії.

Процедура menuSpravki; - виводить на екран файл з меню для довідки.

Процедура menuPrimera; - виводить на екран файл з меню для прикладу.

Процедура Spravka (var n: char); - виводить на екран довідкову інформацію.

n - номер відкривається сторінки.

Процедура Teoria (var n: char); - виводить на екран теоретичну інформацію.

n - номер відкривається сторінки.

Процедура Grafik (а1, b 1, c 1, a 2, b 2, c 2, xc, yc: real); - виводить на екран графік.

а1, b 1, c 1, a 2, b 2, c 2, xc, yc - коефіцієнти матриці.

Процедура Vvod (var x: real; var code: integer); - процедура для введення дійсного числа.

x - дійсне число,

з de - мінлива помилки.

Процедура Vvod 1 (var n: integer); - процедура для введення цілого числа.

n - ціле число;

Процедура Rewenie; - рішення СЛАР.

Процедура Primer - виводить на екран приклади розв'язання СЛАР методом Гауса.

Процедура Vuxod - виводить користувача з програми.

5.3 Опис структур та форматів

У вихідному текстовому файлі зберігається інформація в наступному форматі (роздільник між елементами матриці - один або кілька пробілів):

(Розмір матриці)

(Елементи матриці).

Приклад вихідного файлу:

4

1 5 2 3 5

1 5 6 9 4

1 4 5 6 4

3 6 5 4 8

6. Комплект поставки і порядок встановлення

У комплект поставки входять наступні файли:

EGAVGA. BGI - файл драйвера графічного режиму;

GRAPH. TRU-модуль графічного режиму;

"Menu. Txt" - головне меню інтерфейсу;

"Text 1. Txt", "Text 2. Txt", "Text 3. Txt", "Text 4. Txt", "Text 5. Txt", "Text 6. Txt" - теоретичний матеріал.

"Primer1. txt "," Primer2. txt "," Primer3. txt "," Primer4. txt "- приклади рішення СЛАР.

"SPRAVKA1. Txt" - довідковий матеріал.

OSNOVN2 - весь програмний продукт.

Щоб встановити програму на ПК, необхідно просто скопіювати папку з програмою, в якій містяться всі вищезгадані файли, на диск, з якого користувач хоче вести роботу. Щоб почати роботу з програмою, необхідно запустити файл OSNOVN2.

7. Тестування програми

Для тестування програми розробник вирішив кілька СЛАР вручну, а потім ввів у програму такі ж коефіцієнти як і для ручного прорахунку. Ось що вийшло:

1) Вихідна матриця:

1 1 1

2 2 1

Змінена матриця:

1 1 1

0 0 - 1

Рішень немає. Відповідь програми співпадає з ручним прорахунком.

2) Вихідна матриця:

1 1 2

1 - 1 0

Змінена матриця:

1 1 2

0 2 2

Вектор відповідей:

х [1] = 1

х [2] = 1

Відповідь програми співпадає з ручним прорахунком.

Висновки

У процесі написання курсового проекту був створений пакет прикладних програм для реалізації алгоритму розв'язання систем лінійних рівнянь за допомогою ПК.

Переваги даного методу, а також програми полягають у тому, що з їх допомогою можна вирішувати систем лінійних рівнянь, а також обчислювати невідомі змінні, не витрачаючи часу на обчислення.

Недоліком даного ПП є те, що програма може мати дрібні похибки.

Якщо ж говорити про інтерфейс програми, то слід відзначити його простоту і легкість використання, тому з програмою здатний працювати навіть людина, яка вперше має справу з комп'ютерами.

Автор сподівається, що після доопрацювання програми, ПП можна буде використовувати на виробництві.

Також слід зазначити, що під час написання курсового проекту, автор вивчив основи мови Turbo Pascal 7.0.

Список використаних джерел

1. Турбо Паскаль 7.0 / Алексєєв Є.Р., Чесноков О.В. - М.: НТ Пресс, 2004. - 320с

2. Марченко А.І., Марченко Л.А. Програмування в середовищі Т urbo Р ascal 7.0. - 6-е вид. стереотип. _Юбілейное - К.: ВІК + +, 2000 - 127с. е.

3. Петренко І.В., Біда Є.М. Лекції та практикум з лінійної алгебри: Навчальний е. посібник. - Донецьк: ІПШІ "Наука 1 осв іт а"; 2005. - 76с.

4. Культін Н.Б. Програмування в Turbo Pas з al 7.0 і Delphi / Друге видання, перероблене і доповнене. - СПб.: БХВ - Санкт Петербург, 1999. - 416 с., Іл.

Додаток А

ТЕХНІЧНЕ ЗАВДАННЯ

А.1. Загальні відомості

Підставою для розробки курсової роботи "Метод Гаусса" є завдання, видане кафедрою Програмного забезпечення інтелектуальних систем (поїсом).

Плановий термін початку роботи: 15 лютого 2007

Дата захисту роботи: 29 травня 2007 ж

Курсова робота виконується згідно з графіком, наведеним у таблиці А.1.

Таблиця А.1. - Графік виконання курсової роботи

Етапи роботи

Термін виконання

1


Постановка завдання: визначення вимог до програмного комплексу.

15.02-22.02


2

Складання технічного завдання.

22.02-01.03

3

Розробка методів рішення задачі.

01.03-08.03

4

Розробка алгоритму функціонування програми.

15.03

5

Визначення структур вхідних і вихідних даних, алгоритмів роботи модулів. Опис вхідних та вихідних даних.

22.03 - 29.03

6

Написання програми.

05.04-19.04

7

Налагодження програми.

19.04-26.04

8

Тестування програми.

26.04-03.05

9

Написання пояснювальної записки.

03.05-17.05

10

Захист курсової роботи

29.05

А.2. Призначення та мета створення програми

Курсова робота призначена для допомоги в навчанні рішення систем алгебраїчних рівнянь методом Гауса. Проект може бути використаний в загальноосвітніх школах учнями старших класів, а також студентами математичних спеціальностей вищих навчальних закладів.

О.З. Вимоги до програмного продукту

А.3.1 Вимоги до програмного продукту в цілому;

У цілому до ПП надаються такі вимоги:

інтуїтивно - зрозумілий інтерфейс

наявність меню;

наявність контекстних підказок для поточних і можливих дій користувача

висновок підказок при введенні даних;

надання довідкової інформації за методом Гауса, причому вихідна інформація повинна зберігатися в зовнішніх файлах.

рішення задач в рамках методу Гаусса. Надання користувачеві можливості отримати рішення для конкретних вхідних даних з висновком результатів на екран і збереженням у файл.

використання графічних засобів при вирішенні завдань або надання теоретичного матеріалу за методом Гауса.

А.3.2 Вимоги до завдань і функцій, виконуваних програмою;

вихідна матриця повинна вводитися як з клавіатури, так і з текстового файлу;

для СЛАР другого рангу має виводитися графічне рішення.

користувачеві повинна бути надана довідкова інформація за методом Гауса;

результати обчислення повинні виводитися на екран і зберігатися в текстовий файл;

А.3.3 Вимога до програмного забезпечення Вимогами ПЗ:

ОС М S Windows XP Professional;

наявність Турбо Паскаль.

А.3.4 Вимоги до технічного забезпечення

Для нормального функціонування програмного продукту на машині потрібно:

процесор АВМ А t 1о n;

операційна пам'ять (не менше 64 кб);

клавіатура;

вільний дисковий простір (не менше 128 мб);

А.3.5 Вимога до організаційного забезпечення Вимоги до ГО:

пояснювальна записка;

програми:

технічне завдання;

керівництво користувача;

екранні форми;

тексти програм;

результати роботи.

Додаток Б

КЕРІВНИЦТВО КОРИСТУВАЧА

Даний програмний продукт призначений для допомоги в навчанні систем алгебраїчних рівнянь методом Гауcса. Програма може бути використана в загальноосвітніх школах учнями старших класів, а також студентами математичних спеціальностей вищих навчальних закладів.

Для того, щоб увійти в пункт "Теорія" у вікні меню потрібно натиснути цифру "1". Цей пункт служить для того, щоб користувач зміг ознайомитися з теоретичної стороною рішення СЛАР. Теорія складається з шести сторінок, кожну з яких можна вивести на екран шляхом натисканням відповідної сторінки від 1 до 6. Для виведення на екран довідки з пункту "Теорія" натисніть цифру "0". Для повернення в головне меню натисніть "ESC".

Для того щоб увійти на сторінку "Приклад" у вікні меню потрібно натиснути цифру "2". Цей пункт складається з трьох сторінок, кожну з яких можна вивести на екран шляхом натискання відповідної цифри від 1 до 3. Для виклику довідки натисніть цифру "7". Для виходу в головне меню натисніть "Esc".

Для того, щоб увійти в пункт "Рішення" у вікні меню потрібно натиснути цифру "3". Далі дотримуйтеся порад внизу екрану. Для виклику довідки натисніть цифру "0". Для виходу в головне меню натисніть "Esc".

Для того, щоб увійти в пункт "Довідка" у вікні меню потрібно натиснути цифру "4". Для виходу в головне меню натисніть "Esc".

Для того, щоб вийти з програми на екрані меню потрібно натиснути цифру "5".

Додаток В

ЕКРАННІ ФОРМИ

На малюнок В.1 відображує головне меню текстового інтерфейсу.

На рисунку В.2 відображує вікно теорії.

На рисунку В.3 відображує вікно довідкової інформації.

На малюнку В.4 відображує вікно приклад рішення СЛАР.

Рисунок В.1 Головне меню

Рисунок В.2 Теорія

Малюнок В.3 Довідка

Рисунок В.4 Приклад

Додаток Г

РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ

На малюнку Г.5 відображує вікно рішення матриці на першому кроці. На малюнку Г.6 відображує вікно рішення матриці на другому кроці і перетворена матриця, а також вектор відповідей.

Малюнок Г.5 Рішення на першому кроці

Малюнок Г.6 Відповіді

Додаток Д

Лістинг програм

uses Crt, graph;

Var ch: char;

const Nmax = 100;

Procedure LoadFile (Name: string);

Var f: text; S: string; code: integer;

Begin

assign (f, Name);

{$ I-}

reset (f);

code: = Ioresult;

if code <> 0 then

writeln ('Помилка. Файл не знайдено!')

else begin {clrscr}

gotoxy (1,3);

textcolor (10);

TextBackground (0);

while not eof (f) do

begin

readln (f, S);

writeln (S);

end;

close (f);

end;

End;

Procedure menu;

Begin

TextBackground (0);

clrscr;

LoadFile ('A: MENU. Txt');

textcolor (9);

TextBackground (0);

gotoxy (1,23);

writeln ('----------------------------------------------- ------------------');

gotoxy (1,24);

writeln ('Натисніть номер пункту меню');

end;

procedure menuTeorii;

begin

clrscr;

textcolor (9);

TextBackground (0);

gotoxy (1,23);

writeln ('----------------------------------------------- -------------------------');

gotoxy (1,24);

writeln ('Для переходу вкажіть номер сторінки (від 1 до 6).');

writeln ('Для повернення в меню натисніть Esc. Для виведення довідки натисніть цифру 0.');

end;

procedure menuSpravki;

begin

clrscr;

textcolor (9);

TextBackground (0);

gotoxy (1,23);

writeln ('----------------------------------------------- -------------------------');

gotoxy (1,24);

writeln ('Для повернення назад, натисніть "1".');

writeln ('Для повернення в меню натисніть (Esc).');

end;

procedure menuPrimera;

begin

clrscr;

textcolor (9);

TextBackground (0);

gotoxy (1,23);

writeln ('----------------------------------------------- -------------------------');

gotoxy (1,24);

writeln ('Для переходу вкажіть номер сторінки (від 1 до 4).');

writeln ('Для виведення довідки натисніть "0". Для входу в меню натисніть (Esc).');

end;

procedure Spravka;

var n: char; {номер сторінки}

begin

menuSpravki;

gotoxy (1,1);

LoadFile ('A: Spravka1. Txt');

repeat

n: = readkey; until n in ['1 ', # 27];

case n of

'1 ': Begin

end;

end;

end;

procedure Teoria;

var n: char; {номер сторінки}

begin

menuTeorii;

gotoxy (1,1);

writeln ('сторінка 1');

LoadFile ('A: Text1. Txt');

repeat

repeat n: = readkey; until n in [0 ". '6 ', # 27];

case n of

'1 ': Begin

menuTeorii;

gotoxy (1,1);

writeln ('сторінка 1');

LoadFile ('A: Text1. Txt');

end;

'2 ': Begin

menuTeorii;

gotoxy (1,1);

writeln ('сторінка 2');

LoadFile ('A: Text2. Txt');

end;

'3 ': Begin

menuTeorii;

gotoxy (1,1);

writeln ('сторінка 3');

LoadFile ('A: Text3. Txt');

end;

'4 ': Begin

menuTeorii;

gotoxy (1,1);

writeln ('сторінка 4');

LoadFile ('A: Text4. Txt');

end;

'5 ': Begin

menuTeorii;

gotoxy (1,1);

writeln ('сторінка 5');

LoadFile ('A: Text5. Txt');

end;

'6 ': Begin

menuTeorii;

gotoxy (1,1);

writeln ('сторінка 6');

LoadFile ('A: Text6. Txt');

end;

"0": begin

Spravka;

gotoxy (1,1);

LoadFile ('A: Spravka1. Txt');

end;

end;

until n = # 27;

end;

procedure grafic (a1, b1, c1, a2, b2, c2, xc, yc: real);

var

minx, maxx, miny, maxy: real;

mx, my: real;

x1, y1, x2, y2: integer;

x0, y0: integer;

grDriver: Integer;

grMode: Integer;

ErrCode: Integer;

begin

grDriver: = Detect;

InitGraph (grDriver, grMode, 'c: \ bps \ bin \ egavga. Bgi');

ErrCode: = GraphResult;

if ErrCode = grOk then

begin

minx: = xc-2 * xc;

maxx: = xc +2 * xc;

miny: = yc-2 * yc;

maxy: = yc +2 * yc;

mx: = getmaxx;

mx: = mx / (maxx-minx);

my: = getmaxy / (maxy-miny);

y0: = round (abs (xc) * mx);

x0: = round (abs (yc) * my);

setcolor (white);

line (x0, 0, x0, getmaxy);

line (0, y0, getmaxx, y0);

setcolor (red);

x1: = x0 + round (minx * mx);

y1: = y0-round ((c1-a1 * minx) / b1 * my);

x2: = x0 + round (maxx * mx);

y2: = y0-round ((c1-a1 * maxx) / b1 * my);

line (x1, y1, x2, y2);

setcolor (yellow);

x1: = x0 + round (minx * mx);

y1: = y0-round ((c2-a2 * minx) / b2 * my);

x2: = x0 + round (maxx * mx);

y2: = y0-round ((c2-a2 * maxx) / b2 * my);

line (x1, y1, x2, y2);

Readkey;

CloseGraph;

end

else

Writeln ('Помилка роботи з графікою: ', GraphErrorMsg (ErrCode));

end;

{$ S-}

procedure vvod (var x: real; var code: integer);

var s: string;

begin

readln (s);

val (s, x, code);

if code <> 0 then

writeln ('Помилка, повторіть введення');

end;

procedure vvod1 (var n: integer);

var s: string;

code: integer;

begin

repeat

write ('Введіть кількість елементів матриці');

readln (s);

val (s, n, code);

if (code <> 0) or (N <0) or (N> Nmax) then

writeln ('Введення не вірний. Повторіть введення ...');

until (N> 0) and (N <= Nmax) and (code = 0);

end;

procedure Rewenie;

var

x: array [1. Nmax] of real;

A: array [1. Nmax,

1. Nmax] of real;

B: array [1. Nmax] of real;

N, i, ii, j, l, Rez, kol: integer;

k, S: real;

f, f1: text;

code: integer;

c: char;

Name: string;

Begin

assign (f, 'otvet. txt');

rewrite (f);

clrscr;

gotoxy (30,12);

writeln ('1 - Введення з клавіатури ');

gotoxy (32,13);

writeln ('2 - Введення з файлу ');

gotoxy (28,14);

writeln ('3-Вихід в основне меню ');

repeat c: = readkey; until c in ['1 ', '2', '3 '];

if c = '3 'then

begin

readkey;

exit;

end;

if c = '1 'then

begin

vvod1 (n);

writeln ('введіть матрицю коефіцієнтів ');

for i: = 1 to n do

begin

for j: = 1 to N do

repeat

write ('A [', i ,',', j, '] =');

vvod (A [i, j], code);

until code = 0;

repeat

write ('B [', i, '] =');

vvod (B [i], code);

until code = 0;

end;

end

else

begin

writeln ('Задайте ім'я файлу ');

readln (Name);

assign (f1, Name);

{$ I-}

reset (f);

code: = Ioresult;

if code <> 0 then

begin

writeln ('Помилка. Файл не знайдено!');

writeln ('Для виходу в основне меню натисніть будь-яку клавішу.');

readkey;

exit;

end

else

begin

readln (f1, n);

if Ioresult <> 0 then

begin

writeln ('Помилка читання з файлу! Для виходу в основне меню натисніть будь-яку клавішу.');

readkey;

exit;

end;

for i: = 1 to n do

begin

for j: = 1 to N do

begin

read (f1, a [i, j]);

if Ioresult <> 0 then

begin

writeln ('Помилка читання з файлу! Для виходу в основне меню натисніть будь-яку клавішу. ');

readkey;

exit;

end;

end;

read (f1, b [i]);

if Ioresult <> 0 then

begin

writeln ('Помилка читання з файлу! Для виходу в основне меню натисніть будь-яку клавішу.');

readkey;

exit;

end;

end;

end;

close (f1);

end;

clrscr;

writeln (f, 'Вихідна матриця:');

writeln ('Вихідна матриця: ');

for i: = 1 to N do

begin

for j: = 1 to N do

begin

write (A [i, j]: 10: 4);

write (f, A [i, j]: 10: 4);

end;

writeln ('I', B [i]: 10: 4);

writeln (f, 'I', B [i]: 10: 4);

end;

for i: = 1 to N-1 do begin

for l: = i +1 to N do begin

if a [l, i] = 0 then

begin

writeln ('Перетворення матриці на', i, '-му кроці виконати не можна!');

writeln ('Діагональний елемент дорівнює 0!');

writeln (f, 'Перетворення матриці на', i, '-му кроці виконати не можна!');

writeln (f, 'Діагональний елемент дорівнює 0!');

readkey;

exit;

end;

k: =- A [i, i] / a [l, i];

for j: = 1 to n do

A [l, j]: = A [l, j] * k + A [i, j];

B [l]: = B [l] * k + B [i];

end;

writeln;

writeln ('Перетворення матриці на', i, '-му кроці');

writeln (f);

writeln (f, 'Перетворення матриці на', i, '-му кроці');

for ii: = 1 to N do

begin

for j: = 1 to N do

begin

write (A [ii, j]: 10: 4);

write (f, A [ii, j]: 10: 4);

end;

writeln ('I', B [i]: 10: 4);

writeln (f, 'I', B [i]: 10: 4);

end;

readkey;

writeln;

writeln;

writeln (f);

writeln (f);

end;

rez: = 1;

for i: = 1 to n do

begin

kol: = 0;

for j: = 1 to N do

if A [i, j] = 0 then

kol: = kol +1;

if kol = N then

if B [i] = 0 then

begin

Rez: = 2;

break;

end

else

begin

Rez: = 0;

break;

end;

end;

if rez = 1 then

begin

x [N]: = b [n] / a [n, n];

for i: = N-1 downto 1 do

begin

S: = 0;

for j: = i +1 to N do

S: = S + x [j] * A [i, j];

x [i]: = (B [i]-S) / A [i, j];

end;

writeln ('Змінена матриця');

writeln (f, 'Змінена матриця');

for i: = 1 to N do

begin

for j: = 1 to N do

begin

write (A [i, j]: 10: 4);

write (f, A [i, j]: 10: 4);

end;

writeln ('I', B [i]: 10: 4);

writeln (f, 'I', B [i]: 10: 4);

end;

writeln ('Вектор відповідей ');

writeln (f, 'Вектор відповідей ');

for i: = 1 to N do

begin

writeln ('x [', i, '] =', x [i]: 10: 4);

writeln (f, 'x [', i, '] =', x [i]: 10: 4);

end;

if N = 2 then

begin

writeln ('Натисніть будь-яку клавішу для перегляду графіка ");

readkey;

grafic (a [1,1], a [1,2], b [1], a [2,1], a [2,2], b [2], x [1], x [2]) ;

end;

end

else

if rez = 0 then

begin

writeln ('Рішень нескінченна безліч');

writeln (f, 'Рішень нескінченна безліч');

end

else

begin

writeln ('Рішень НІ ');

writeln (f, 'Рішень НІ');

end;

readkey;

close (f);

end;

procedure Primer;

var n: char; {номер сторінки}

begin

menuPrimera;

gotoxy (1,1);

writeln ('сторінка 1');

LoadFile ('A: Primer1. Txt');

repeat

repeat n: = readkey; until n in [0 ". '4 ', # 27];

case n of

'1 ': Begin

menuPrimera;

gotoxy (1,1);

writeln ('сторінка 1');

LoadFile ('A: Primer1. Txt');

end;

'2 ': Begin

menuPrimera;

gotoxy (1,1);

writeln ('сторінка 2');

LoadFile ('A: Primer2. Txt');

end;

'3 ': Begin

menuPrimera;

gotoxy (1,1);

writeln ('сторінка 3');

LoadFile ('A: Primer3. Txt');

end;

"0": begin

Spravka;

gotoxy (1,1);

LoadFile ('A: Spravka1. Txt');

end;

'4 ': Begin

menuPrimera;

gotoxy (1,1);

writeln ('сторінка 4');

LoadFile ('A: Primer4. Txt');

end;

end;

until n = # 27;

end;

procedure Vuxod;

begin

exit;

end;

Begin

repeat

menu;

repeat ch: = readkey;

until ch in [1 ". '5 '];

case ch of

'1 ': Teoria;

'2 ': Primer;

'3 ': Rewenie;

'4 ': Spravka;

'5 ': Vuxod;

end;

until ch = '5 ';

end.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
109.1кб. | скачати


Схожі роботи:
Прямі методи розв`язання систем лінійних алгебраїчних рівнянь
Ітераційні методи розв`язання систем лінійних алгебраїчних рівнянь
Точні методи розв`язання систем лінійних алгебраїчних рівнянь СЛАР
Ітераційні методи розв`язання системи лінійних алгебраїчних рівнянь
Чисельні методи розв`язання систем лінійних рівнянь
Розв язання систем лінійних рівнянь методом Гауса
Розробка програми для розв`язання систем лінійних рівнянь
Методи розв`язання алгебраїчних рівнянь
Методи розв`язання алгебраїчних рівнянь 2
© Усі права захищені
написати до нас